import { HttpClient } from '@angular/common/http';
import { MapType } from '@angular/compiler';
import { Injectable } from '@angular/core';
import { Observable } from "rxjs";

@Injectable({
  providedIn: 'root'
})
export class BusinessCircleService {

  serviceUrls: any = {
    queryCircleUrl: '/board/list', // 查看圈子板块
    addCircleUrl: '/board/save', // 添加圈子板块
    updateCircleUrl: '/board/update', // 编辑 && 删除 圈子板块
    queryPostsTypeUrl: '/boardType/list', // 查询帖子类型
    addPostsTypeUrl: '/boardType/save', // 添加帖子类型
    updatePostsTypeUrl: '/boardType/update', // 编辑 || 删除 帖子类型
    queryCircleManageUrl: '/circle/list', // 查询圈子管理
    setIdentityUrl: '/circle/saveOrUpdate', // 圈子管理--设置身份 && 封禁账号
    queryReportUrl: '/report/list', // 查询举报管理
    queryReportDetailUrl: '/report/details', // 举报详情
    deleteCommentUrl: '/posts/deleteComment', // 删除评论
    updateReportUrl: '/report/update', // 修改举报数据 || 无效举报
    savePostsUrl: '/posts/save', // 添加帖子
    updatePostsUrl: '/posts/update', // 修改帖子 || 下架帖子
    sendCommentUrl: '/posts/comment', // 发送评论
    queryPostsListUrl: '/posts/list', // 查询帖子列表
    updatePostsListUrl: '/posts/update', // 修改帖子
    deletePostUrl: '/posts/deletePosts', // 删除帖子
    queryPostsDetailsUrl: '/posts/details', // 帖子详情
    queryCommentListUrl: '/comment/list', // 评论列表
    uploadFileUrl: '/common/upload/file', // 文件上传
  }

  constructor(public httpClient: HttpClient) { }

  /**
   * 查询圈子板块
   * @param params 
   * @returns 
   */
  getCircleTableData(): Promise<any> {
    return this.httpClient.post(this.serviceUrls.queryCircleUrl, {}).toPromise();
  }

  /**
   * 新增圈子板块
   * @param params 
   * @returns 
   */
  addCircleItemData(params: any): Promise<any> {
    return this.httpClient.post(this.serviceUrls.addCircleUrl, params).toPromise();
  }

  /**
   * 编辑 || 删除 圈子板块
   * @param params 
   * @returns 
   */
  updateCircleItemData(params: any): Promise<any> {
    return this.httpClient.post(this.serviceUrls.updateCircleUrl, params).toPromise();
  }

  /**
   * 查询帖子【类型】
   * @param params 
   * @returns 
   */
  getPostsTypeTableData(params: any): Promise<any> {
    return this.httpClient.post(this.serviceUrls.queryPostsTypeUrl, params).toPromise();
  }

  /**
   * 添加帖子【类型】
   * @param params 
   * @returns 
   */
  addPostsTypeItemData(params: any): Promise<any> {
    return this.httpClient.post(this.serviceUrls.addPostsTypeUrl, params).toPromise();
  }

  /**
   * 编辑 || 删除 帖子【类型】
   * @param params 
   * @returns 
   */
  updatePostsTypeItemData(params: any): Promise<any> {
    return this.httpClient.post(this.serviceUrls.updatePostsTypeUrl, params).toPromise();
  }

  /**
   * 查询圈子管理
   * @param params 
   * @returns 
   */
  queryCircleManageTableData(): Promise<any> {
    return this.httpClient.post(this.serviceUrls.queryCircleManageUrl, {}).toPromise();
  }
  
  /**
   * 设置身份 && 封禁账号
   * @param params 
   * @returns 
   */
  setupBanData(params: any): Promise<any> {
    return this.httpClient.post(this.serviceUrls.setIdentityUrl, params).toPromise();
  }
  
  /**
   * 查询举报管理
   * @param params 
   * @returns 
   */
  queryReportManageTableData(params: any): Promise<any> {
    return this.httpClient.post(this.serviceUrls.queryReportUrl, params).toPromise();
  }
  
  /**
   * 查询举报详情
   * @param params 
   * @returns 
   */
  queryReportDetailTableData(params: any): Promise<any> {
    return this.httpClient.post(this.serviceUrls.queryReportDetailUrl, params).toPromise();
  }
  
  /**
   * 删除评论
   * @param params 
   * @returns 
   */
  deleteCommentData(params: any): Promise<any> {
    return this.httpClient.post(this.serviceUrls.deleteCommentUrl, params).toPromise();
  }
  
  /**
   * 修改举报数据 || 举报无效
   * @param params 
   * @returns 
   */
  updateReportItemData(params: any): Promise<any> {
    return this.httpClient.post(this.serviceUrls.updateReportUrl, params).toPromise();
  }

  /**
   * 修改帖子 || 下架帖子
   * @param params 
   * @returns 
   */
  updatePostsItemData(params: any): Promise<any> {
    return this.httpClient.post(this.serviceUrls.updatePostsUrl, params).toPromise();
  }
  
  /**
   * 查询帖子列表
   * @param params 
   * @returns 
   */
  queryPostsListData(params: any): Promise<any> {
    return this.httpClient.post(this.serviceUrls.queryPostsListUrl, params).toPromise();
  }
  
  /**
   * 删除帖子
   * @param params 
   * @returns 
   */
  deletePostsData(params: any): Promise<any> {
    return this.httpClient.post(this.serviceUrls.deletePostUrl, params).toPromise();
  }

  /**
   * 查询帖子详情
   * @param params 
   * @returns 
   */
  queryPostsDetailsData(params: any): Promise<any> {
    return this.httpClient.post(this.serviceUrls.queryPostsDetailsUrl, params).toPromise();
  }
  
  /**
   * 添加帖子
   * @param params 
   * @returns 
   */
  savePostsItemData(params: any): Promise<any> {
    return this.httpClient.post(this.serviceUrls.savePostsUrl, params).toPromise();
  }

  /**
   * 发送评论
   * @param params 
   * @returns 
   */
  sendCommentData(params: any): Promise<any> {
    return this.httpClient.post(this.serviceUrls.sendCommentUrl, params).toPromise();
  }

  /**
   * 查询评论列表
   * @param params 
   * @returns 
   */
  queryCommentListData(params: any): Promise<any> {
    return this.httpClient.post(this.serviceUrls.queryCommentListUrl, params).toPromise();
  }

  /**
   * 文件上传
   * @param fileToUpload 
   * @returns 
   */
  uploadFileData(fileToUpload: File) {
    const formData: FormData = new FormData();
    formData.append('file', fileToUpload);
    formData.append('name', "posts-manage");
    return this.httpClient.post(this.serviceUrls.uploadFileUrl, formData).toPromise();
  }
}

